Skip to content

feat: remote MCP server integration with admin UI and Connector Manager gateway - #381

Merged
prvnsmpth merged 19 commits into
masterfrom
feat/direct-mcp-integration
Jul 29, 2026
Merged

feat: remote MCP server integration with admin UI and Connector Manager gateway#381
prvnsmpth merged 19 commits into
masterfrom
feat/direct-mcp-integration

Conversation

@prvnsmpth

@prvnsmpth prvnsmpth commented Jul 27, 2026

Copy link
Copy Markdown
Contributor

This PR adds the ability to connect to external Streamable HTTP MCP servers directly through Omni's admin UI. Unlike the existing MCP support baked into native Omni connectors (which use MCP internally), this lets admins point Omni at any remote MCP server — no connector code needed.

  • Add sources.integration_type column to distinguish native connectors from remote MCP, with conditional slug constraints to prevent collisions
  • Implement SSRF-hardened MCP probe with DNS pinning plus admin CRUD endpoints for setup, edit, test, and deletion
  • Dispatch MCP actions and resources in-process via a RemoteMcpGateway instead of routing through the connector SDK
  • Resolve credentials per-call for public, shared bearer token, and per-user OAuth without org-token fallback
  • Exclude remote MCP sources from realtime, scheduled, and manual sync paths
  • Normalize MCP OAuth discovery into the existing oauth field, reusing generic OAuth start/callback/refresh/credential-ready flows
  • Add Connector Manager POST /remote-mcp/:source_id/refresh endpoint so probe results persist to Redis across page reloads
  • Use shadcn Select for the Authentication dropdown and add a tooltip to the refresh button

@prvnsmpth
prvnsmpth force-pushed the feat/direct-mcp-integration branch from 52a9ff9 to fb591c5 Compare July 27, 2026 08:31
prvnsmpth added 18 commits July 29, 2026 15:44
- add admin-managed remote MCP sources, probing, credentials, and OAuth setup
- reconcile MCP catalogs into manifests and route tools, resources, and prompts through the gateway
- prevent sync and slug collisions while adding SSRF protections and focused tests
- Agent connect.lookup callback must return an array when opts.all is true
- Improve error logging to surface underlying cause for fetch failures
- Allow hyphens in MCP source slugs (regex and DB constraint)
- Show user-friendly error message instead of raw regex
- Remove stray 'export' from helper function causing SvelteKit 500
- List page now loads and displays all configured MCP connections
- Add MCP form moved to a dialog instead of a separate page
- Shows manifest availability, tool/resource counts, and connection status per source
- Remove internal-infrastructure jargon (Connector Manager, Redis)
- Remove redundant security reassurance text
- 'Immutable' → 'Can't be changed later'
- 'Runtime catalog' → 'Connection status'
- 'Bootstrap credential' → 'Admin access'
- 'Catalog data discovered at runtime' → 'Available tools detected automatically'
- Test endpoint now accepts sourceId to look up stored bearer credentials
- Edit page passes sourceId when no new token is provided
- Save also skips sending empty bearerToken to avoid validation errors
- MCP is now the third tab (Sources, OAuth Apps, MCP) on the integrations page
- Sidebar MCP link points to /admin/settings/integrations?tab=mcp
- Shared MCP tab component used by both standalone page and tab
- Edit pages remain at /admin/settings/mcp/[sourceId]
- Add POST /remote-mcp/:source_id/refresh endpoint to Connector Manager
- Web test endpoint triggers CM catalog refresh when sourceId is provided
- Edit page calls invalidateAll after refresh to show fresh manifest data
@prvnsmpth
prvnsmpth force-pushed the feat/direct-mcp-integration branch from 36bfc19 to bef9360 Compare July 29, 2026 10:14
@prvnsmpth
prvnsmpth merged commit e7d92a3 into master Jul 29, 2026
64 checks passed
@prvnsmpth
prvnsmpth deleted the feat/direct-mcp-integration branch July 29, 2026 11:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant